package main

import "fmt"

func main() {
	// uint8类型 或者叫byte类型 代表了ASSCII码的一个字节
	// rune类型 代表了一个UTF-8字符 处理中文或其他复合字符时 则需要用到rune类型 rune类型实际是一个int32
	//  bete和rune类型
	// Go语言中为了处理非ASCII码类型的字符 定义了rune类型
	// 对于英文存的字符叫byte 对于中文或者其他语系字符 叫runes类型	byte本质上是一个uint8

	s := "Hello沙河"
	// len() 求得是byte字节数量	"byte字节数量"	utf-8中汉字一般占三个字节
	n := len(s) // 求字符串s的长度,把长度保存在变量n中
	fmt.Println(n)

	// for i := 0; i < len(s); i++ {
	// 	// fmt.Println(s[i])
	// 	fmt.Println("%c\n", s[i]) // "%c" : 字符
	// }
	// for _, c := range s { // 从字符串中拿出具体的字符
	// 	fmt.Printf("%c\n", c)
	// }

	// 字符串修改  实际上是不能修改的  修改相当于修改成另外的变量去修改它
	s2 := "白萝卜"             // [白 萝 卜]  字符
	s3 := []rune(s2)        // 把字符串强制转换成了一个rune切片 切片里保存的是字符 rune(int32) 本质是一个int32
	s3[0] = '红'             // 	byte本质上是一个uint8
	fmt.Println(string(s3)) // 把rune强制转换成字符串
	// 单引号''是字符  双引号"" 是字符串

	// 类型转换  bool 不能转换  整数可以转换浮点数
	n1 := 10 // int
	var f float64 = float64(n1)
	fmt.Println(f)
	fmt.Printf("%T\n", f)

	// 流程控制 if for swicth goto

}
